package com.molichuxing.services.infrastructure.dao;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;

import com.molichuxing.framework.dao.RootMapper;
import com.molichuxing.services.infrastructure.bean.AccidentBean;
import com.molichuxing.services.infrastructure.dto.response.AccidentDownloadDto;

/**
 * <p>
 * 事故表 Mapper 接口
 * </p>
 *
 * @author xuelin yi
 * @since 2019-09-04
 */
public interface AccidentMapper  extends RootMapper<AccidentBean> {

    /**
     * 根据条件分页查询count
     * @param map
     * @return
     */
    public int getAccidentPageCount(@Param("param") Map<String, Object> map);


    /**
     * 根据条件分页查询结果
     * @param map
     * @param pageNum
     * @param pageSize
     * @return
     */
    public List<AccidentBean> getAccidentPage(@Param("param") Map<String, Object> map, @Param("pageNum")int pageNum, @Param("pageSize") int pageSize);


    /**
     * 根据车辆id获取事故信息
     * @param carId
     * @return
     */
    public List<AccidentBean> getAccidentByCarId(@Param("carId") int carId);

    /**
     * 根据事故id获取事故详情
     * @param accidentId
     * @return
     */
    @Override
    AccidentBean getById(@Param("accidentId") Integer accidentId);

    /**
     * 修改事故信息
     * @param accidentBean
     * @return
     */
    int modifyAccident(@Param("bean") AccidentBean accidentBean);

    /**
     * APP事故列表
     * @param orderCodes 
     * @param userId
     * @param pageNum
     * @param pageSize
     * @return
     */
    List<AccidentBean> getAccidentAppPage(@Param("orderCodes")List<Long> orderCodes, @Param("userId") Integer userId,@Param("pageNum") Integer pageNum,@Param("pageSize") Integer pageSize);

    /**
     * 创建事故信息
     * @param accidentBean
     * @return
     */
    int createAccident(AccidentBean accidentBean);

    /**
     * 更新事故信息
     * @param accidentBean
     * @return
     */
    int updateAccidentById(AccidentBean accidentBean);

    /**
     * 修改事故主状态
     * @param accidentId
     * @param status
     * @return
     */
    int updateAccidentStatusById(@Param("accidentId")Integer accidentId,@Param("status") Integer status);

    int getAccidentAppPageCount(@Param("orderCodes")List<Long> orderCodes, @Param("userId")Integer userId,@Param("pageNum") Integer pageNum,@Param("pageSize") Integer pageSize);


    /**
     *  事故待确认数量& 结案待确认数量
     * @param status
     * @return
     */
    Integer getAccidentCount(Integer status);

    /**
     * 查询事故报备导出数据
     * @param map
     * @return
     */
	 List<AccidentDownloadDto> getAccidentDownload(@Param("param") Map<String, Object> map);

	/**
	 * 查询事故报备导出数据条数
	 * 
	 * @param selectParams
	 * @return
	 */
	public Long getAccidentDownloadCount(@Param("param") Map<String, Object> selectParams);
}
